package reflect;

/**
 * 可变长度参数
 * int... args
 * 语法: 类型... (注意: 一定是3个点)
 * <p>
 * 1. 可变长度参数要求的参数个数是: 0~n个
 * 2. 可变长度参数在参数列表中必须在最后一个位置上，而且可变长度参数只能有1个
 * 3. 可变长度参数可以当做一个数组来看待
 */
public class ArgsTest {
    public static void main(String[] args) {
        method();
        method(10);
        method(10, 20);
        method2(20);
        method2(10, "20");
        m3("ab", "cd", "ef");
        String[] strings = {"a", "b", "c", "d"};
        m3(strings);
        // 直接传一个数组
        m3(new String[]{"你", "好"});
        m3("你", "好");
    }

    public static void method(int... args) {
        System.out.println("method方法执行");
    }

    public static void method2(int a, String... args) {
        System.out.println("method2方法执行");
    }

    public static void m3(String... args) {
        // args有length属性，说明args是一个数组！
        for (int i = 0; i < args.length; i++) {
            System.out.println(args[i]);
        }
    }
}
